package com.javarush.test.level19.lesson03.task03;

/* Адаптация нескольких интерфейсов
Адаптировать IncomeData к Customer и Contact.
Классом-адаптером является IncomeDataAdapter.
Инициализируйте countries перед началом выполнения программы. Соответствие кода страны и названия:
UA Ukraine
RU Russia
CA Canada
Дополнить телефонный номер нулями до 10 цифр при необходимости
*/

import java.util.HashMap;
import java.util.Map;

public class Solution {
    public static Map<String,String> countries = new HashMap<String,String>();
    static {
        countries.put("UA","Ukraine");
        countries.put("RU","Russia");
        countries.put("CA","Canada");
    }

    public static void main(String[] args)
    {

    }

    public static class IncomeDataAdapter implements Customer,Contact{
        private IncomeData data;
        IncomeDataAdapter(IncomeData data)
        {
            this.data=data;
        }

        @Override
        public String getName() {
            return this.data.getContactLastName()+", "+this.data.getContactFirstName();
        }

        @Override
        public String getCompanyName() {
            return this.data.getCompany();
        }

        @Override
        public String getPhoneNumber() {
            String number="";
            String code=String.valueOf(this.data.getCountryPhoneCode());
            String phone=String.valueOf(this.data.getPhoneNumber());
            StringBuffer p=new StringBuffer(phone);
            code="+"+code;
            if (p.length()<10)
                for(int i=p.length(); i<10;i++ )
                    p.insert(0,"0");

            p.insert(0,"(");
            p.insert(4,")");
            p.insert(8,"-");
            p.insert(11,"-");
            number=code+String.valueOf(p);
            return number;
        }

        @Override
        public String getCountryName(){
            return countries.get(this.data.getCountryCode());
        }
    }

    public static interface IncomeData {
        String getCountryCode();        //example UA
        String getCompany();            //example JavaRush Ltd.
        String getContactFirstName();   //example Ivan
        String getContactLastName();    //example Ivanov
        int getCountryPhoneCode();      //example 38
        int getPhoneNumber();           //example 501234567
    }

    public static interface Customer {
        String getCompanyName();        //example JavaRush Ltd.
        String getCountryName();        //example Ukraine
    }

    public static interface Contact {
        String getName();               //example Ivanov, Ivan
        String getPhoneNumber();        //example +38(050)123-45-67
    }
}